package ihm;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;

import visualisationRadar.VisualisationRadar;

public class BarreMenu extends JMenuBar implements ActionListener,
		ItemListener, MenuListener {

	private JMenu menuFichier;
	private JMenu menuAffichage;
	private JMenu menuAide;
	private JMenu menuOutils;
	private JMenu menuSuperposer;
	private JRadioButtonMenuItem menuPluviometres;
	private JRadioButtonMenuItem menuFondCarte;
	private JRadioButtonMenuItem menuPointRadar;
	private JMenuItem menuCharger;
	private JMenuItem menuSauvegarder;
	private JMenuItem menuComparaison;
	private JMenuItem menuQuitter;
	private JMenuItem menuApropos;
	private JRadioButtonMenuItem menuZoom;

	private VisualisationRadar visualisationRadar;

	public BarreMenu(VisualisationRadar visualisationRadar) {
		super();

		this.visualisationRadar = visualisationRadar;

		menuFichier = new JMenu("Fichier");
		menuCharger = new JMenuItem("Charger");
		menuQuitter = new JMenuItem("Quitter");
		this.add(menuFichier);
		menuFichier.add(menuCharger);
		menuFichier.addSeparator();
		menuFichier.add(menuQuitter);

		menuAffichage = new JMenu("Affichage");
		menuSuperposer = new JMenu("Superposer");
		menuFondCarte = new JRadioButtonMenuItem("Fond de cartes");
		menuPluviometres = new JRadioButtonMenuItem("Valeurs des pluviometres");
		menuPointRadar = new JRadioButtonMenuItem("Le Radar");
		this.add(menuAffichage);
		menuAffichage.add(menuSuperposer);
		menuSuperposer.add(menuFondCarte);
		menuSuperposer.addSeparator();
		menuSuperposer.add(menuPluviometres);
		menuSuperposer.addSeparator();
		menuSuperposer.add(menuPointRadar);

		menuOutils = new JMenu("Outils");
		menuSauvegarder = new JMenuItem("Sauvegarder");
		menuComparaison = new JMenuItem("Comparaison");
		menuZoom = new JRadioButtonMenuItem("Zoom");
		this.add(menuOutils);
		menuOutils.add(menuSauvegarder);
		menuOutils.addSeparator();
		menuOutils.add(menuZoom);
		menuOutils.addSeparator();
		menuOutils.add(menuComparaison);

		menuAide = new JMenu("Aide");
		menuApropos = new JMenuItem("\u00C0 propos");
		this.add(menuAide);
		menuAide.add(menuApropos);

		menuApropos.addActionListener(this);
		menuCharger.addActionListener(this);
		menuFondCarte.addItemListener(this);
		menuPluviometres.addItemListener(this);
		menuPointRadar.addItemListener(this);
		menuQuitter.addActionListener(this);
		menuSauvegarder.addActionListener(this);
		menuComparaison.addActionListener(this);
		menuZoom.addItemListener(this);
		menuPluviometres.addItemListener(this);
		menuOutils.addMenuListener(this);
	}

	@Override
	// action sur le bouton superposer
	public void itemStateChanged(ItemEvent e) {
		if (e.getSource() == menuFondCarte) {
			if (menuFondCarte.isSelected())
				visualisationRadar.setFond(true);
			else
				visualisationRadar.setFond(false);
			visualisationRadar.notifieIhm();
		}

		if (e.getSource() == menuPointRadar) {
			if (menuPointRadar.isSelected())
				visualisationRadar.setPointRadar(true);
			else
				visualisationRadar.setPointRadar(false);
			visualisationRadar.notifieIhm();
		}

		if (e.getSource() == menuZoom)
			visualisationRadar.zoomer(menuZoom.isSelected());

		if (e.getSource() == menuPluviometres) {
			if (menuPluviometres.isSelected()) {

				if (visualisationRadar.getObjetRadar().getImageRadar() == null) {
//					System.err.println("pas d'image chargée ");
				} else if (visualisationRadar.getObjetRadar().getImageRadar()
						.getPluviometres() == null) {
					System.err.println("pas de pluviomètres pour "
							+ visualisationRadar.getObjetRadar()
									.getImageRadar().getChaine());
					String chaineErreur = ("Fichier pluvios absent");
					JOptionPane.showMessageDialog(this, chaineErreur);
					menuPluviometres.setSelected(false);
				} else {
					visualisationRadar.setPluvios(true);
				}
			} else
				visualisationRadar.setPluvios(false);
			visualisationRadar.notifieIhm();
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == menuQuitter)
			System.exit(0);

		if (e.getSource() == menuCharger) {
			JFileChooser fc = new JFileChooser(
					VisualisationRadar.repertoireDonnees);
			fc.setMultiSelectionEnabled(false);
			fc.showOpenDialog(this);
			File fileImg = fc.getSelectedFile();
			if (fileImg != null) {
				if (!visualisationRadar.chargeImage(fileImg)) {
					String chaineErreur = ("Fichier  absent");
					JOptionPane.showMessageDialog(this, chaineErreur);
					System.err.println("pas de fichier pour "
							+ visualisationRadar.getObjetRadar()
									.getImageRadar().getChaine());
				}
			}
		}

		if (e.getSource() == menuSauvegarder)
			visualisationRadar.saveGraphics();

		if (e.getSource() == menuApropos) {
			FenetreAide aide;
			aide = new FenetreAide();
			aide.pack();
			aide.setVisible(true);
		}

		if (e.getSource() == menuComparaison) {
			visualisationRadar.compareRadarPluvios();
		}

		// radar.notifieIhm();
	}

	public void setPluviosSelected(boolean b) {
		menuPluviometres.setSelected(b);
	}

	@Override
	public void menuCanceled(MenuEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void menuDeselected(MenuEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void menuSelected(MenuEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == menuOutils) {
			menuComparaison.setEnabled(visualisationRadar.getObjetRadar()
					.getImageRadar() != null
					&& visualisationRadar.getObjetRadar().getImageRadar()
							.getPluviometres() != null);
		}
	}
}
